package com.android.support.lib.sdk.cloopen;

import java.util.HashMap;
import java.util.Set;

import android.util.Log;

import com.android.support.lib.universal.util.UtilRandom;
import com.cloopen.rest.sdk.CCPRestSmsSDK;

/**
 * 容联云通讯 http://www.yuntongxun.com/activity/smsAndLandingCall?kw=bdxyz
 * 
 * @author Administrator
 *
 */
public class SDKTestSendTemplateSMS {

	public interface SendSMSListener {

		public void onReturn(String code);

	};

	/**
	 * 
	 * @param pn
	 *            手机号码
	 * @param listener
	 *            监听器，短信发送成功会返回验证码,失败返回"0"
	 */
	public static void SendSMSSync(final String pn,
			final SendSMSListener listener) {

		new Thread() {
			public void run() {
				String code = sendTemplateSMS(pn);
				if (null != listener) {
					listener.onReturn(code);
				}
			}
		}.start();
	}

	private static String sendTemplateSMS(String phoneNumber) {
		HashMap<String, Object> result = null;
		// 初始化SDK
		CCPRestSmsSDK restAPI = new CCPRestSmsSDK();

		// ******************************注释*********************************************
		// *初始化服务器地址和端口 *
		// *沙盒环境（用于应用开发调试）：restAPI.init("sandboxapp.cloopen.com", "8883");*
		// *生产环境（用户应用上线使用）：restAPI.init("app.cloopen.com", "8883"); *
		// *******************************************************************************
		// restAPI.init("sandboxapp.cloopen.com", "8883");
		restAPI.init("app.cloopen.com", "8883");

		// ******************************注释*********************************************
		// *初始化主帐号和主帐号令牌,对应官网开发者主账号下的ACCOUNT SID和AUTH TOKEN *
		// *ACOUNT SID和AUTH TOKEN在登陆官网后，在“应用-管理控制台”中查看开发者主账号获取*
		// *参数顺序：第一个参数是ACOUNT SID，第二个参数是AUTH TOKEN。 *
		// *******************************************************************************
		restAPI.setAccount("aaf98f89499d24b50149a2a3d97e03a9",
				"5ce261dfd0ab4dd8a9471d16e7345da6");

		// ******************************注释*********************************************
		// *初始化应用ID *
		// *测试开发可使用“测试Demo”的APP ID，正式上线需要使用自己创建的应用的App ID *
		// *应用ID的获取：登陆官网，在“应用-应用列表”，点击应用名称，看应用详情获取APP ID*
		// *******************************************************************************
		restAPI.setAppId("aaf98f894ef91b17014efc7e7d2e03a6");

		// ******************************注释****************************************************************
		// *调用发送模板短信的接口发送短信 *
		// *参数顺序说明： *
		// *第一个参数:是要发送的手机号码，可以用逗号分隔，一次最多支持100个手机号 *
		// *第二个参数:是模板ID，在平台上创建的短信模板的ID值；测试的时候可以使用系统的默认模板，id为1。 *
		// *系统默认模板的内容为“【云通讯】您使用的是云通讯短信模板，您的验证码是{1}，请于{2}分钟内正确输入”*
		// *第三个参数是要替换的内容数组。 *
		// **************************************************************************************************

		// 随机生成的验证码
		String code = UtilRandom.getRandom(6);

		// **************************************举例说明***********************************************************************
		// *假设您用测试Demo的APP ID，则需使用默认模板ID（短信模板ID）
		// 1，发送手机号是13800000000，传入参数为6532和5，则调用方式为 *
		// *result = restAPI.sendTemplateSMS("13800000000","1" ,new
		// String[]{"6532","5"}); *
		// *则13800000000手机号收到的短信内容是：【云通讯】您使用的是云通讯短信模板，您的验证码是6532，请于5分钟内正确输入 *
		// *********************************************************************************************************************
		result = restAPI.sendTemplateSMS(phoneNumber, "29555", new String[] {
				code, "2" });

		// 返回结果
		if ("000000".equals(result.get("statusCode"))) {
			// 正常返回输出data包体信息（map）
			HashMap<String, Object> data = (HashMap<String, Object>) result
					.get("data");
			Set<String> keySet = data.keySet();
			for (String key : keySet) {
				Object object = data.get(key);
				Log.e("key", " = " + object);
			}
			return code;
		} else {
			try {
				// 异常返回输出错误码和错误信息
				Log.e("错误码=",
						result.get("statusCode") + " 错误信息= "
								+ result.get("statusMsg"));
			} catch (Exception e) {
				// TODO: handle exception
			}
			return "0";
		}
	}
}
